<?php
/**
 * Author:   tangxiaowen
 * Email:    846506584@qq.com
 * Date:     2019/5/21 0013
 * Describe: 基础继承类.
 */

namespace app\api\controller\lishidai;

use think\Controller;
use think\Db;
use app\common\controller\order\Orderget;

class Songsong extends Controller
{
    public function __construct()
    {
        parent::__construct();
    }
    /**
     * 还款结果回调
     *  Partner.Order.repayStatusFeedback.
     */
    public function repayStatusFeedback($data = [])
    {
        $Partner = ' Partner.Order.repayStatusFeedback';
        $requestArgs = [
            'order_sn' => $data['order_sn'], //订单编号
            'repay_result' => $data['repay_result'], //200	还款已经成功300	展期扣款成功301	展期扣款失败401	还款失败，余额不足402	今日代扣次数已用完403	今日支付额度已达上限405	验证码输入错误505	其他还款失败原因，请备注到fail_reason字段用于前端透传
            'updated_at' => time(), //状态变更时间(10位时间戳)
            'fail_reason' => $data['fail_reason'], // 还款失败原因描述
         ];
        $array = $this->get_data($Partner, $requestArgs); //获取数据的函数
        $array['data']['args'] = json_encode($array['data']['args'], 1);
        $re = httpPost($array['data'], $array['url']);
        return $re;
    }

    /**
     *Partner.Order.repayPlanFeedback
     *还款计划推送
     * $OrderSn 订单变号.
     */
    public function repayPlanFeedback($OrderSn = '')
    {
        $data = Db::table('xb_loans_applylist')->where(['OrderSn' => $OrderSn])->find(); //获取订单数据
        $Partner = 'Partner.Order.repayPlanFeedback';
        $repayment_plan = [
             'period_no' => '1', //还款期号
             'principle' => $data['AdoptMoney'] * 100, //本期还款本金; 单位: 分
             'interest' => '0', //本期还款利息; 单位: 分
             'service_fee' => '0', //本期服务费用; 单位: 分
             'bill_status' => '0', //本期账单状态; -1: 未出账; 0: 待还款; 1: 已还款
             'total_amount' => $data['daoqiMoney'] * 100, //本期还款总额; 单位: 分
             'already_paid' => '0', //本期已还金额; 单位: 分
             'loan_time' => strtotime($data['YyFkTime']), //实际起息时间(10位时间戳)
             'due_time' => strtotime($data['YyFkTime']), //最迟还款时间（10位时间戳，精确到秒超过该时间就算逾期）
             'can_pay_time' => strtotime($data['YyFkTime']), //可以还款时间(10位时间戳)
             'finish_pay_time' => strtotime($data['YyFkTime']), //实际完成还款时间(10位时间戳)
             'overdue_day' => '0', //逾期天数
             'overdue_fee' => '0', //逾期费用; 单位: 分
             'period_fee_desc' => '无', //本期费用描述
             'pay_type' => '0', //还款支付方式; 如: 0.未还款 1. 主动还款 2.系统扣款 3. 支付宝转账 4. 银行转账或其它方式
        ];
        $requestArgs = [
            'order_sn' => $data['OrderSn'], //订单编号
            'total_amount' => $data['daoqiMoney'] * 100, //还款总额; 单位: 分 本期还款本金期数相加 principle相加
            'total_svc_fee' => $data['Interest'] * 100, //总服务费; 单位: 分
            'received_amount' => $data['AdoptMoney'] * 100, //到账金额; 单位: 分
            'already_paid' => '0', //已还金额; 单位: 分
            'total_period' => '1', //总期数
            'finish_period' => '0', //已还期数
            'borrow_dealine' => $data['ApplyDay'], //借款期限 订单借款期限
            'borrow_unit' => '1', //借款期限单位 1 天 2 月 3 年
            'repayment_plan' => $repayment_plan,
         ];
        $array = $this->get_data($Partner, $requestArgs); //获取数据的函数
        $array['data']['args'] = json_encode($array['data']['args'], 1);
        $re = httpPost($array['data'], $array['url']);

        return $re;
    }

    /**
     * 放款结果回调
     * Partner.Order.lendingFeedback.
     */
    public function lendingFeedback($data)
    {
        $Partner = 'Partner.Order.lendingFeedback';
        $requestArgs = [
            'order_sn' => $data['order_sn'], //订单编号
            'lending_status' => $data['lending_status'], //200	放款成功 401	放款失败
            'fail_reason' => $data['fail_reason'], //放款失败的说明信息
            'updated_at' => time(),
         ];
        $array = $this->get_data($Partner, $requestArgs); //获取数据的函数
        $array['data']['args'] = json_encode($array['data']['args'], 1);
        $re = httpPost($array['data'], $array['url']);

        return $re;
    }

    /**
     * Partner.Order.approveFeedback
     * 审批结果回调.
     * order_sn	string	是	订单唯一编号
     *approve_status	string	是	审批状态
     *approve_amount	string	是	审批后的可借金额单位（分）
     *approve_term	string	是	审批后的可借周期
     *term_type	string	是	1:按天; 2：按月; 3：按年
     *approve_remark	string	是	审批状态备注
     *can_loan_time	string	是	可以再次申请借款的时间，此时间之前将不在请求用户过滤接口。值如：2017-03-29 08:00:00
     *updated_at	string	是	订单状态变更时间(10位时间戳).
     */
    public function approveFeedback($data)
    {
        $Partner = 'Partner.Order.approveFeedback';
        //		订单状态 5：拒绝 1：通过
        if ($data['LoanStatus'] == '5') {
            $data['LoanStatus'] = '200';
        }
        if ($data['LoanStatus'] == '1') {
            $data['LoanStatus'] = '200';
        }
        $requestArgs = [
            'order_sn' => $data['OrderSn'], //订单唯一编号
            'approve_status' => $data['LoanStatus'], //  审批状态   200	审批通过403	审批拒绝
            'approve_amount' => $data['ApplyMoney'] * 100, //审批后的可借金额单位（分）
            'approve_term' => $data['ApplyDay'], //审批后的可借周期
            'term_type' => '2', //1:按天; 2：按月; 3：按年
            'approve_remark' => 'ok', //审批状态备注
            'can_loan_time' => '2027-12-29 08:00:00', //可以再次申请借款的时间，此时间之前将不在请求用户过滤接口。值如：2017-03-29 08:00:00
            'updated_at' => time(), //订单状态变更时间(10位时间戳)
         ];
        $array = $this->get_data($Partner, $requestArgs); //获取数据的函数
        $array['data']['args'] = json_encode($array['data']['args'], 1);
        $re = httpPost($array['data'], $array['url']);
        return $re;
    }

    //	获取配置项
    public function getConfig()
    {
        $data = [];
        $data['ua'] = Db::table('xb_sys_inteparameter')->where('ParaName', 'lishidai_ua')->value('ParaValue');
        $data['key'] = Db::table('xb_sys_inteparameter')->where('ParaName', 'lishidai_key')->value('ParaValue');
        $data['url'] = Db::table('xb_sys_inteparameter')->where('ParaName', 'lishidai_url')->value('ParaValue');

        return $data;
    }

    /**
     * 获取最后请求数据 公共方法
     * $Partner  请求名称
     * $requestArgs 最初请求参数
     * $data 最后的返回参数.
     */
    public function get_data($Partner, $requestArgs)
    {
        $config = $this->getConfig();
        $signKey = $config['ua'].$config['key'].$config['ua'];
        $args = json_encode($requestArgs);
        $sign = md5($signKey.$args.$signKey);
        $data = [
        'ua' => $config['ua'],
        'call' => $Partner,
        'args' => $requestArgs,
        'sign' => $sign,
        'timestamp' => time(),
        ];
        $url = $config['url'];
        $array['data'] = $data;
        $array['url'] = $config['url'];

        return $array;
    }

    /**
     * 订单同步接口
     * Partner.Order.pushOrderStatus.
     */
//  public function pushOrderStatus()
//  {
//      $Partner = 'Partner.Order.pushOrderStatus';
//      $requestArgs = [
//          'order_sn' => '132465', //订单唯一编号
//          'order_status' => '1', //订单状态，如下表 1	待补充2	待审核3	待绑卡4	确认用款5	待签约6	待放7	待提现(暂无)8	待还款9	审核失败10	已结清11	已失效12	签约失败13	还款中
//          'approve_time' => '14', //审批时间（十位标准时时间戳）
//          'confirm_time' => '1414', //确认用款时间（十位标准时时间戳）
//          'lending_time' => '414', //放款时间（十位标准时时间戳）
//          'repay_time' => '174574', //应还款时间（十位标准时时间戳）
//          'real_repay_time' => '174574', //结清时间（十位标准时时间戳）
//          'remark' => 'beizhu', //备注
//       ];
//      $array = $this->get_data($Partner, $requestArgs); //获取sign的函数
//      $re = httpJson($array['url'], $array['data'], 1);
//      p($re);
//      die;
//  }
}
